// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm.
// Copyright 2018-2019 Pawel Bylica.
// Licensed under the Apache License, Version 2.0.

/// @file
/// ProgPoW test vectors.

#pragma once

namespace  // In anonymous namespace to allow including in multiple compilation units.
{
/// Defines a test case for ProgPoW hash() function.
struct progpow_hash_test_case
{
    int block_number;
    const char* header_hash_hex;
    const char* nonce_hex;
    const char* mix_hash_hex;
    const char* final_hash_hex;
};

progpow_hash_test_case progpow_hash_test_cases[] = {
    {0, "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000",
        "f4ac202715ded4136e72887c39e63a4738331c57fd9eb79f6ec421c281aa8743",
        "b3bad9ca6f7c566cf0377d1f8cce29d6516a96562c122d924626281ec948ef02"},
    {49, "b3bad9ca6f7c566cf0377d1f8cce29d6516a96562c122d924626281ec948ef02", "0000000006ff2c47",
        "7730596f128f675ef9a6bb7281f268e4077d302f2b9078da1ece4349248561dd",
        "0b9ed0c11157f1365143e329a6e1cea4248d9d6cb44b9c6daf492c7a076654a4"},
    {50, "0b9ed0c11157f1365143e329a6e1cea4248d9d6cb44b9c6daf492c7a076654a4", "00000000076e482e",
        "829136d4a704eb8d06da773f1a90466e7b5ed12119c44526f045bbff4475d891",
        "e2e881c5b893c2f1ef06b96a10cfcbcf7255b307f0818e7d30eb12b2edfc237b"},
    {99, "e2e881c5b893c2f1ef06b96a10cfcbcf7255b307f0818e7d30eb12b2edfc237b", "000000003917afab",
        "deb3d8b45bdc596c56aa37a5eba456f478c82e60e5c028ce95f2e654e4bb7b57",
        "9bdc2ad2286eaa051d6ca1f5196d2dd1c9a039f1d7ce3e1c856b793deed01778"},
    {29950, "9bdc2ad2286eaa051d6ca1f5196d2dd1c9a039f1d7ce3e1c856b793deed01778", "005d409dbc23a62a",
        "c01e6d339cc687c77f653b81c74cb9de8b595554f2c5db671a7dde3846d2fa01",
        "de0d693e597cf2fd70a4cfaa73f6baafc29e1eee695a81295b278c1116580b72"},
    {29999, "de0d693e597cf2fd70a4cfaa73f6baafc29e1eee695a81295b278c1116580b72", "005db5fa4c2a3d03",
        "8b664cdbf396a7a185446c93dddd6611f5a736b11097381ae6bea45e802cec16",
        "21ec5d1984a4fd4394b042aa96365085225d964727a45def245ceab326e28128"},
    {30000, "21ec5d1984a4fd4394b042aa96365085225d964727a45def245ceab326e28128", "005db8607994ff30",
        "276951d89c1ed262bcac00df4fb9bf7af36991532744a2e287b0b758a56e15aa",
        "dc070b76cc311cd82267f98936acbbbd3ec1c1ab25b55e2c885af6474e1e6841"},
    {30049, "dc070b76cc311cd82267f98936acbbbd3ec1c1ab25b55e2c885af6474e1e6841", "005e2e215a8ca2e7",
        "6248ba0157d0f0592dacfe2963337948fffb37f67e7451a6862c1321d894cebe",
        "6fdecf719e2547f585a6ee807d8237db8e9489f63d3f259ab5236451eaded433"},
    {30050, "6fdecf719e2547f585a6ee807d8237db8e9489f63d3f259ab5236451eaded433", "005e30899481055e",
        "512d8f2bb0441fcfa1764c67e8dbed2afcbe9141de4bbebc5b51e0661dede550",
        "cb1587a1c372642cbd9ce4c1ba2f433985d44c571a676a032bc1e8c1ad066e24"},
    {30099, "cb1587a1c372642cbd9ce4c1ba2f433985d44c571a676a032bc1e8c1ad066e24", "005ea6aef136f88b",
        "be0e7d6afa6edd483ccc304afa9bf0abaca5e0f037a4f05bf5550b9309d1d12c",
        "78be18f20569a834d839dad48e0e51d6df6b6537575f0ad29898c7cf357f12cb"},
    {59950, "78be18f20569a834d839dad48e0e51d6df6b6537575f0ad29898c7cf357f12cb", "02ebe0503bd7b1da",
        "b85be51fce670aa437f28c02ea4fd7995fa8b6ac224e959b8dbfb5bdbc6f77ce",
        "a68a620ba17e0cf2817bc4397cf4b85f5770983aa7b7931319a7f61bd6f905b1"},
    {59999, "a68a620ba17e0cf2817bc4397cf4b85f5770983aa7b7931319a7f61bd6f905b1", "02edb6275bd221e3",
        "ffe745a932c21c0704291bb416fe8bffec76621cd3434861885beab42cec1734",
        "9e6667a151ac6f5186a05cb20877a2b3df02317046256a762cb8ec2d96aa34f0"},

};
}  // namespace
